
/*Definicao da estrutura de candidatos*/
typedef struct
{
	int candidato;
	int indice;

} ItemCandidato;

typedef struct _candidato
{
	ItemCandidato itemCandidato;
	struct _candidato *prox;

} Candidato;

typedef Candidato *PCandidato;

typedef struct {
	PCandidato Primeiro,Ultimo;
} ListaCandidato;

/* Definicao da estrutura de votos*/
typedef struct {
	int votos;
	ListaCandidato candidatos;
} ItemVoto;

typedef struct _voto {
	ItemVoto itemVoto;
	struct _voto *prox;
} Voto;

typedef Voto *PVoto;

typedef struct {
	PVoto Primeiro, Ultimo;
} ListaVoto;

/*Metodos para manipular a lista de candidatos*/
int isListaCandidatoVazia(ListaCandidato L);

void criarListaCandidato(ListaCandidato *L);

void inserirPonteiroCandidato(ListaCandidato *L, PCandidato P);

void inserirCandidato(ListaCandidato *L,int candidato, int indice);

void imprimirCandidatos(ListaCandidato L);

void liberaCandidato(ListaCandidato L);

/*Metodos para manipular a lista de Votos*/
int isListaVotoVazia(ListaVoto L);

void criarListaVoto(ListaVoto *L);

void inserirPonteiroVoto(ListaVoto *L, PVoto P);

void inserirVoto(ListaVoto *L, int votos, ListaCandidato LC);

void imprimirVotos(ListaVoto L);

void liberaVoto(ListaVoto L);
